home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / WrappedPlainView$WrappedLine.class (.txt) < prev   
Encoding:
Java Class File  |  1999-07-15  |  4.4 KB  |  169 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Graphics;
  6. import java.awt.Rectangle;
  7. import java.awt.Shape;
  8. import javax.swing.event.DocumentEvent;
  9. import javax.swing.text.Position.Bias;
  10.  
  11. class WrappedPlainView$WrappedLine extends View {
  12.    // $FF: synthetic field
  13.    private final WrappedPlainView this$0;
  14.    int nlines;
  15.  
  16.    WrappedPlainView$WrappedLine(WrappedPlainView var1, Element var2) {
  17.       super(var2);
  18.       this.this$0 = var1;
  19.    }
  20.  
  21.    final int calculateLineCount() {
  22.       int var1 = 0;
  23.       int var2 = ((View)this).getEndOffset();
  24.  
  25.       int var4;
  26.       for(int var3 = ((View)this).getStartOffset(); var3 < var2; var3 = var4 == var3 ? var2 : var4) {
  27.          ++var1;
  28.          var4 = this.this$0.calculateBreakPosition(var3, var2);
  29.       }
  30.  
  31.       return var1;
  32.    }
  33.  
  34.    public float getPreferredSpan(int var1) {
  35.       switch (var1) {
  36.          case 0:
  37.             return (float)this.this$0.getWidth();
  38.          case 1:
  39.             if (this.nlines == 0 || this.this$0.widthChanging) {
  40.                this.nlines = this.calculateLineCount();
  41.             }
  42.  
  43.             int var2 = this.nlines * this.this$0.metrics.getHeight();
  44.             return (float)var2;
  45.          default:
  46.             throw new IllegalArgumentException("Invalid axis: " + var1);
  47.       }
  48.    }
  49.  
  50.    public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  51.       int var4 = this.calculateLineCount();
  52.       if (this.nlines != var4) {
  53.          this.nlines = var4;
  54.          this.this$0.preferenceChanged(this, false, true);
  55.          ((View)this).getContainer().repaint();
  56.       } else if (var2 != null) {
  57.          Container var5 = ((View)this).getContainer();
  58.          Rectangle var6 = (Rectangle)var2;
  59.          ((Component)var5).repaint(var6.x, var6.y, var6.width, var6.height);
  60.       }
  61.  
  62.    }
  63.  
  64.    public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException {
  65.       Rectangle var4 = var2.getBounds();
  66.       var4.height = this.this$0.metrics.getHeight();
  67.       var4.width = 1;
  68.       int var5 = ((View)this).getEndOffset();
  69.       int var6 = ((View)this).getStartOffset();
  70.  
  71.       for(int var7 = var3 == Bias.Forward ? var1 : Math.max(var6, var1 - 1); var6 < var5; var4.y += var4.height) {
  72.          int var8 = this.this$0.calculateBreakPosition(var6, var5);
  73.          if (var1 >= var6 && var7 < var8) {
  74.             this.this$0.loadText(var6, var1);
  75.             var4.x += Utilities.getTabbedTextWidth(this.this$0.lineBuffer, this.this$0.metrics, var4.x, this.this$0, var6);
  76.             return var4;
  77.          }
  78.  
  79.          if (var8 == var5 && var1 == var5) {
  80.             if (var1 > var6) {
  81.                this.this$0.loadText(var6, var1);
  82.                var4.x += Utilities.getTabbedTextWidth(this.this$0.lineBuffer, this.this$0.metrics, var4.x, this.this$0, var6);
  83.             }
  84.  
  85.             return var4;
  86.          }
  87.  
  88.          var6 = var8 == var6 ? var5 : var8;
  89.       }
  90.  
  91.       throw new BadLocationException((String)null, var1);
  92.    }
  93.  
  94.    public void paint(Graphics var1, Shape var2) {
  95.       Rectangle var3 = (Rectangle)var2;
  96.       int var4 = var3.y + this.this$0.metrics.getAscent();
  97.       int var5 = var3.x;
  98.       JTextComponent var6 = (JTextComponent)((View)this).getContainer();
  99.       Highlighter var7 = var6.getHighlighter();
  100.       LayeredHighlighter var8 = var7 instanceof LayeredHighlighter ? (LayeredHighlighter)var7 : null;
  101.       int var9 = ((View)this).getEndOffset();
  102.  
  103.       for(int var10 = ((View)this).getStartOffset(); var10 < var9; var4 += this.this$0.metrics.getHeight()) {
  104.          int var11 = this.this$0.calculateBreakPosition(var10, var9);
  105.          if (var8 != null) {
  106.             if (var11 == var9) {
  107.                var8.paintLayeredHighlights(var1, var10, var11 - 1, var2, var6, this);
  108.             } else {
  109.                var8.paintLayeredHighlights(var1, var10, var11, var2, var6, this);
  110.             }
  111.          }
  112.  
  113.          this.this$0.drawLine(var10, var11, var1, var5, var4);
  114.          var10 = var11 == var10 ? var9 : var11;
  115.       }
  116.  
  117.    }
  118.  
  119.    public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  120.       int var4 = this.calculateLineCount();
  121.       if (this.nlines != var4) {
  122.          this.nlines = var4;
  123.          this.this$0.preferenceChanged(this, false, true);
  124.          ((View)this).getContainer().repaint();
  125.       } else if (var2 != null) {
  126.          Container var5 = ((View)this).getContainer();
  127.          Rectangle var6 = (Rectangle)var2;
  128.          ((Component)var5).repaint(var6.x, var6.y, var6.width, var6.height);
  129.       }
  130.  
  131.    }
  132.  
  133.    public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) {
  134.       var4[0] = Bias.Forward;
  135.       Rectangle var5 = (Rectangle)var3;
  136.       Document var6 = ((View)this).getDocument();
  137.       int var7 = (int)var1;
  138.       int var8 = (int)var2;
  139.       if (var8 < var5.y) {
  140.          return ((View)this).getStartOffset();
  141.       } else if (var8 > var5.y + var5.height) {
  142.          return ((View)this).getEndOffset() - 1;
  143.       } else {
  144.          var5.height = this.this$0.metrics.getHeight();
  145.          int var9 = ((View)this).getEndOffset();
  146.  
  147.          for(int var10 = ((View)this).getStartOffset(); var10 < var9; var5.y += var5.height) {
  148.             int var11 = this.this$0.calculateBreakPosition(var10, var9);
  149.             if (var8 >= var5.y && var8 < var5.y + var5.height) {
  150.                if (var7 < var5.x) {
  151.                   return var10;
  152.                }
  153.  
  154.                if (var7 > var5.x + var5.width) {
  155.                   return var11;
  156.                }
  157.  
  158.                int var12 = Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, var5.x, var7, this.this$0, var10);
  159.                return Math.min(var10 + var12, var9 - 1);
  160.             }
  161.  
  162.             var10 = var11 == var10 ? var9 : var11;
  163.          }
  164.  
  165.          return ((View)this).getEndOffset() - 1;
  166.       }
  167.    }
  168. }
  169.